#ifndef _MENU_H_
#define _MENU_H_

#include <gtk/gtk.h>
#include "sdlNiveau.h"

/** @brief File brief description
    Le module menu assure la gestion du menu du jeu, les fonctions et procédures contenues dans ce module
    permettent de créer ou sélectionner un heros, de choisir son niveau de difficulté puis de reprendre le
    jeu au niveau ou il s'était arrêté*/



/** @brief C'est la première fenêtre du menu visible par l'utilisateur*/
void menu (int argc, char** argv);

/** @brief l'écran de jeu permet de choisir son niveau ou d'accéder aux modes de jeu supplémentaires
 *  @param pwidget 
 *  @param pdata
 *  @return none*/
void ecran_jeu (GtkWidget* pwidget, gpointer pdata);

/** @brief le premier_écran permet d'accéder à la création de heros ou à la sélection de heros*/
void premier_ecran (GtkWidget* pwidget, gpointer pdata);

/** @brief comme le nom l'indique c est le choix de la difficulté*/
void choix_difficulte (GtkWidget* pwidget, gpointer pdata);

/** @brief Permet de choisir le niveau de difficulté facile*/
void difficulte_facile (GtkWidget* pwidget, gpointer pdata);

/** @brief Pour confirmer son choix de difficulté ou revenir en arrière et choisir un autre
    niveau de difficulté*/
void confirmation_facile (GtkWidget* pwidget, gpointer pdata);

void difficulte_moyen (GtkWidget* pwidget, gpointer pdata);

void confirmation_moyen (GtkWidget* pwidget, gpointer pdata);

void difficulte_difficile (GtkWidget* pwidget, gpointer pdata);

void confirmation_difficile (GtkWidget* pwidget, gpointer pdata);

void difficulte_extreme(GtkWidget* pwidget, gpointer pdata);

void confirmation_extreme (GtkWidget* pwidget, gpointer pdata);

/** @brief Cette procédure permet de créer un nouveau profil*/
void creationHeros (GtkWidget* pwidget,gpointer pdata);

/** @brief Cette procédure donne la possibilitée à l'utilisateur de taper le nom du heros qu'il souhaite 
    créer, il a la possibilité de vérifier sa saisie avant de la confirmer*/
void on_copier_button_creation_heros(GtkWidget *pButton, gpointer data);

/** @brief Pour charger un profil déjà existant utiliser cette procédure*/
void selectionHeros (GtkWidget* pwidget,gpointer pdata);

/** @brief Cette procédure permet à l'utilisateur de taper le nom du heros qu il souhaite 
    sélectionner, il a la possibilité de vérifier sa saisie avant de la confirmer*/
void on_copier_button_selection_heros(GtkWidget *pButton, gpointer data);

/** @brief le mode survivor est un mode spécial qui doit être déverouillé*/
void survivor (GtkWidget* pwidget,gpointer pdata);

/** @brief Ces procédures chargent le profil courant, créent chacune un niveau et toute sa gestion et mettent a jour le profil
    lorsque le niveau est terminé que le joueur ait gagné ou non*/
void creationNiveau1 (GtkWidget* pwidget,gpointer pdata);

void creationNiveau2 (GtkWidget* pwidget,gpointer pdata);

void creationNiveau3 (GtkWidget* pwidget,gpointer pdata);

void creationNiveau4 (GtkWidget* pwidget,gpointer pdata);  

void creationNiveau5 (GtkWidget* pwidget,gpointer pdata);  

/** @brief cette procedure gère le chargement des niveaux suivant les résultats du joueur*/
void suivantNiveau (GtkWidget* pwidget,gpointer pdata);

#endif